home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 11 / CU Amiga Magazine's Super CD-ROM 11 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-06].iso / s / groupscale.pprx < prev    next >
Text File  |  1992-03-14  |  2KB  |  115 lines

  1. /*
  2. @BGroupScale  @P@ICopyright Gold Disk Inc., February, 1992
  3.  
  4. This Genie will scale a group of boxes. Enter values as a percentage of the current dimensions.
  5. */
  6. parse arg xratio, yratio
  7. address command
  8. cr      = '0a'x
  9. numbers = "1234567890."
  10. call SafeEndEdit.rexx()
  11. call ppm_AutoUpdate(0)
  12. units = ppm_GetUnits()
  13. if units = 3 then
  14.     call ppm_SetUnits(1)
  15.  
  16. signal on halt
  17. signal on break_c
  18. signal on break_e
  19. signal on break_d
  20.  
  21.  
  22. box = ppm_GroupFirstBox()
  23.  
  24. if box  = 0 then exit_msg("Select group of boxes first")
  25.  
  26. if xratio = '' | yratio = '' then
  27. do
  28.     form    = "Width %"cr"Height %"
  29.     form    = ppm_GetForm("Select Scaling Options", 8, form)
  30.     if form = '' then exit_msg()
  31.  
  32.     parse var form width '0a'x height
  33. end
  34. else
  35. do
  36.     if words(xratio) = 2 then
  37.     do
  38.         width = word(xratio, 1)
  39.         height = word(xratio, 2)
  40.     end
  41.     else
  42.     do
  43.         width = xratio
  44.         height = yratio
  45.     end
  46. end
  47.  
  48. if width    = '' then
  49.     width   = 100
  50. else
  51.     width   = strip(width)
  52.  
  53. if height   = '' then
  54.     height  = 100
  55. else
  56.     height  = strip(height)
  57.  
  58. if verify(width||height, numbers) ~= 0 | width < 1 | height < 1 then exit_msg("Invalid Entry")
  59. grprect = ppm_GetGroupRect()
  60. grpleft = word(grprect, 1)
  61. grptop  = word(grprect, 2)
  62.  
  63. width       = width / 100
  64. height      = height / 100
  65.  
  66. call ppm_ShowStatus("Working..")
  67. boxtypes = "EMPTYTEXT"
  68.  
  69. do while box ~= 0
  70.  
  71.     boxsize     = ppm_GetBoxSize(box)
  72.     boxpos      = ppm_GetBoxPosition(box)
  73.     boxleft     = word(boxpos, 1)
  74.     boxtop      = word(boxpos, 2)
  75.     boxwidth    = word(boxsize, 1)  * width
  76.     boxheight   = word(boxsize, 2)  * height
  77.  
  78.     call ppm_SetBoxSize(box, boxwidth, boxheight)
  79.  
  80.     xoffset = (boxleft - grpleft) * width + grpleft
  81.     yoffset = (boxtop - grptop) * height + grptop
  82.  
  83.     call ppm_SetBoxPosition(box, xoffset, yoffset)
  84.  
  85.    if verify(upper(word(ppm_GetBoxInfo(box), 1)), boxtypes) ~= 0 then
  86.    do
  87.        boxscale = ppm_GetBoxScale(box)
  88.        call ppm_SetBoxScale(box,width*word(boxscale,1),height * word(boxscale, 2))
  89.       offset = ppm_GetBoxOffset(box)
  90.       call ppm_SetBoxOffset(box,width * word(offset,1),height * word(offset, 2))
  91.    end
  92.  
  93.     box = ppm_GroupNextBox(box)
  94. end
  95.  
  96. exit_msg()
  97. break_d:
  98. break_e:
  99. break_c:
  100. halt:
  101.     call exit_msg("User aborted Genie!")
  102.  
  103. exit_msg: procedure expose units
  104. do
  105.     parse arg message
  106.  
  107.     if message ~= '' then
  108.         call ppm_Inform(1,message,)
  109.  
  110.     if units = 3 then call ppm_SetUnits(3)
  111.     call ppm_ClearStatus()
  112.     call ppm_AutoUpdate(1)
  113.     exit
  114. end
  115.